/*
	控制层，提供控制层操作
*/
package controllers

import (
	"github.com/gin-gonic/gin"
	"micro-bbs/configs"
	"time"
)

// 基础控制器，把公用的操作和引入都放这里
type BaseController struct {
	Ctx gin.Context
}

// 通用返回结构体
type Result struct {
	Code    int         `json:"code"`
	Data    interface{} `json:"data,omitempty"`
	Msg     string      `json:"msg"`
	TimeMap int64       `json:"timemap"`
}

//定义错误信息
var MsgCodeMap = map[int]string{

	200: "成功",

	//以下是本平台的错误码
	4000: "参数错误，参数检查不过关", //参数错误，参数检查不过关
	4001: "操作不存在",        //操作不存在
	4002: "redis未连接上",    //redis未连接上
	4003: "无效的token信息",
	4004: "请登录再操作",
	4005: "验证码错误",

	//以下是用户的错误码
	5001: "用户不存在",             //用户不存在


	//文章相关错误
	5100: "获取文章异常",
	5101: "文章内容不存在",
	5102: "没有符合类型的type",
	5103: "获取Redis文章失败",

	//分类相关错误
	5200: "获取分类记录失败！",
	5201: "题目还没开始，敬请期待！",

	//友链相关错误
	5300: "获取友链列表失败！",

	//金融基金相关错误
	5400: "基金代码输入错误！",
	5401: "股票代码输入错误！",

	//产生异常返回的错误码
	-1: "系统异常",
}

//	默认系统返回错误函数
func (this *BaseController) returnResult(code int, data interface{}, msg string) interface{} {

	content := make(map[string]interface{})
	content["code"] = code

	if msg != "" {
		content["msg"] = msg
	} else {
		content["msg"] = configs.MsgCode[code]
	}

	//如果返回结果集为空
	if data == nil {
		data = []int{}
	}
	content["data"] = data
	content["timemap"] = time.Now().Unix()
	return content
}
